<?php

class ValidadorDeFormularioDeExperienciaProfissional extends Model{
	
	/*******************
	 * ATRIBUTOS 
	 *******************/
	
	private $mensagemStatus;
	private $formularioValido;
	public $camposDoFormulario;
	public $errors;
	
	/*******************
	 * CONSTRUTOR 
	 *******************/
	
	public function __construct() {
		// load database library into $this->db (can be omitted if not required)
		//parent::__construct();
		$this->mensagemStatus = "";
		$this->formularioValido = false;
		$this->errors = array();
		$this->camposDoFormulario = null;
	}
	
	/*******************
	 * METODOS 
	 *******************/	

	//Verifica se há erros em qualquer um dos campos do formulário, caso houver devolve o array de erros
	public function verificarCamposValidos(){
		$this->camposDoFormulario = Validate::factory($_POST);
		$indiceEmpresa = 0;
		//verificando checkbox possueExperiencia
		if(isset($_POST['possueExperiencia'])){
			$possueExperiencia = $_POST['possueExperiencia'];
			if($possueExperiencia == "sim"){
				$this->camposDoFormulario->rule('empresa' . $indiceEmpresa, 'not_empty');
				$this->camposDoFormulario->rule('cargo' . $indiceEmpresa, 'not_empty');
				$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'MesInicio', 'not_empty');
				$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'AnoInicio', 'not_empty');
				$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'MesFim', 'not_empty');
				$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'AnoFim', 'not_empty');
				
				
				for($indiceEmpresa = 1; $indiceEmpresa < 4; $indiceEmpresa++){
					if(!($_POST["empresa".$indiceEmpresa] == "")){
						$this->camposDoFormulario->rule('empresa' . $indiceEmpresa, 'not_empty');
						$this->camposDoFormulario->rule('cargo'.$indiceEmpresa, 'not_empty');
						$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'MesInicio', 'not_empty');
						$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'AnoInicio', 'not_empty');
						$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'MesFim', 'not_empty');
						$this->camposDoFormulario->rule('periodo' . $indiceEmpresa . 'AnoFim', 'not_empty');
					}
				}
			}
			else{
				$this->setFormularioValido(true);
			}
		}
		else{
			$this->camposDoFormulario->rule('possueExperiencia', 'not_empty');
		}


		if ($this->camposDoFormulario->check()){
			$this->setFormularioValido(true);
		}
		else{
			if (!$this->isFormularioValido()){
				$this->setFormularioValido(false);			
				$this->setErros($this->camposDoFormulario->errors('camposDoFormularioDeFormularioDeExperienciaProfissional'));
				$this->redefinirMensagensDeErro();	
			}
		}	
		
	}
	
	private function redefinirMensagensDeErro(){
		//REDEFININDO AS MENSAGENS DE ERRO
		for($indiceEmpresa = 0; $indiceEmpresa < 4; $indiceEmpresa++){
			if (isset($this->errors['empresa' . $indiceEmpresa])){
				$this->errors['empresa' . $indiceEmpresa] = "Informe o nome da empresa";
			}
			if (isset($this->errors['cargo'.$indiceEmpresa])){
				$this->errors['cargo'. $indiceEmpresa] = "Informe qual o cargo";
			}
			if (isset($this->errors['periodo' . $indiceEmpresa . 'MesInicio'])){
				$this->errors['periodo' . $indiceEmpresa . 'MesInicio'] = "Informe qual o mes de entrada";
			}
			if (isset($this->errors['periodo' . $indiceEmpresa . 'AnoInicio'])){
				$this->errors['periodo' . $indiceEmpresa . 'AnoInicio'] = "Informe qual o ano de entrada";
			}
			if (isset($this->errors['periodo' . $indiceEmpresa . 'MesFim'])){
				$this->errors['periodo' . $indiceEmpresa . 'MesFim'] = "Informe qual o mes de saída";
			}
			if (isset($this->errors['periodo' . $indiceEmpresa . 'AnoFim'])){
				$this->errors['periodo' . $indiceEmpresa . 'AnoFim'] = "Informe qual o ano de saída";
			}
		}
	}



	// This might go in base Model class
	public function getFormValues() {
		return arr::overwrite($this->fields, $this->$camposDoFormulario->as_array());
	}

	// This might go in base Model class
	public function getValidationErrors() {
		return arr::overwrite($this->fields, $this->$camposDoFormulario->errors('form_errors'));
	}


	/*******************
	 * GETTERS/SETTERS 
	 *******************/
	
	public function isFormularioValido() {
		return $this->formularioValido;
	}
	
	public function setFormularioValido($formularioValido){
		$this->formularioValido = $formularioValido;
	}
	
	public function getErros() {
		return $this->errors;
	}
	
	public function setErros($errors){
		$this->errors = $errors;
	}
	
	public function getCamposDoFormulario() {
		return $_POST;
	}
	
	public function setCamposDoFormulario($camposDoFormulario){
		$this->camposDoFormulario = $camposDoFormulario;
	}
}
?>